package LeetCode;

/**
 * @author VX5
 * @Title: MJC
 * @ProjectName DataStructure
 * @Description: TODO
 * @date ${DAT}15:46
 */
public class interview46 {

//    public int translateNum(int num) {
//        if (num<=9) {return 1;}
//        //获取输入数字的余数，然后递归的计算翻译方法
//        int ba = num%100;//因为最多就两位数
//        //如果大于9或者大于26的时候，余数不能按照2位数字组合，比如56，只能拆分为5和6；反例25，可以拆分为2和5，也可以作为25一个整体进行翻译。
//        if (ba<=9||ba>=26) {//两位数在字母表外
//            return translateNum(num/10);//在进行去除十位数
//        } else  {
//            return translateNum(num/10)+translateNum(num/100);
//        }
//    }
    public static int getTranslationCount(int number){
        if(number<0)
            return 0;
        if(number==1)
            return 1;
        return getCount(Integer.toString(number));
    }
    //动态规划，从右到左计算。
    //f(r-2) = f(r-1)+g(r-2,r-1)*f(r);
    //如果r-2，r-1能够翻译成字符，则g(r-2,r-1)=1，否则为0
    public static int getCount(String number) {
        int f1 = 0,f2 = 1,g = 0;
        int temp;
        for(int i=number.length()-2;i>=0;i--){
            if(Integer.parseInt(number.charAt(i)+""+number.charAt(i+1))<26)
                g = 1;
            else
                g = 0;
            temp = f2;
            f2 = f2+g*f1;
            f1 = temp;
        }
        return f2;
    }
    public static void main(String[] args){
        System.out.println(getTranslationCount(-10));
        System.out.println(getTranslationCount(1234));
        System.out.println(getTranslationCount(12258));
    }
}
